package com.swak.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.swak.utils.StringUtils;

/**
 * Cache 的使用
 * 
 * @author DELL
 */
@Target({ ElementType.METHOD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Cache {

	/**
	 * @return 缓存的名称
	 */
	String name() default StringUtils.EMPTY;

	/**
	 * @return 将参数的值作为缓存的名称，指定第几个参数，标注在参数上有效
	 */
	int paramValueForName() default -1;

	/**
	 * @return 缓存结果，标注在方法上有效
	 */
	boolean cachedResult() default false;

	/**
	 * @return 生命周期
	 */
	int timeToIdle() default -1;

}
